Since the dawn of the computer age, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. The widespread proliferation of computers prompted the development of computer networks that allows computers to communicate with each other. With the introduction of the personal computer (PC), computing became accessible to large numbers of people. Networks for personal computers were developed that allow individual users to communicate with each other.
One significant computer network that has recently become very popular is the Internet. The Internet grew out of this proliferation of computers and networks, and has evolved into a sophisticated worldwide network of computer system resources commonly known as the World Wide Web (web). A user at an individual PC (i.e., workstation) that wishes to access the Internet typically does so using a software application known as a web browser. A web browser makes a connection via the Internet to other computers known as web servers, and receives information from the web servers that is rendered to the user's workstation. Information transmitted from the web server to the web browser is generally formatted using a specialized language called Hypertext Markup Language (HTML) and is typically organized into pages known as web pages. Other Internet resources exist for transferring information, such as File Transfer Protocol (FTP) and Gopher, but have not achieved the popularity of the web. In the web environment, servers and clients affect data transfer using the Hypertext Transfer Protocol (HTTP), a known protocol for handling the transfer of various data files (e.g., text, still graphic images, audio, motion video, etc.). When capitalized, the term “Internet” refers to the collection of networks and gateways that use the TCP/IP suite or protocols.
It will be understood by one of ordinary skill in the art that the term “computer” or “computational device”, as used herein, may refer to any of such device which contains a processor and some type of memory. The networks connecting computational devices may be “wired” networks, formed using lines such as copper wire or fiber optic cable, wireless networks employing earth and/or satellite-based wireless transmission links, or combinations of wired and wireless network portions. Many such networks may be organized using a client/server architecture, in which “server” computational devices manage resources, such as files, peripheral devices, or processing power, which may be requested by “client” computational devices. “Proxy servers” can act on behalf of other machines, such as either clients or servers.
On-line commerce is now an important part of our economy, mainly because of the efficiency and the ready convenience that on-line commerce, or e-commerce, provides. Furthermore, online merchants have discovered the value of selling their goods via the Internet. The term e-commerce is used herein to refer to any commercial activity using computers interconnected by a communication network, e.g., the Internet. Because of the unique characteristics of the Internet, carrying out commercial transactions over the Internet presents new issues and new opportunities.
In order to provide web-based information and services over the internet, the web employs “client” computers, “browser” software, and “server” computers. A client computer is a computer used by an individual to connect to the internet and access web pages. A browser is a software application, located on a client computer, which requests, via the internet, a web page from a server computer. After receiving the web page, the browser displays the web page on the client computer's monitor. A server computer is a computer which stores web page information, retrieves that information in response to a browser's request, and sends the information, via the internet, to the client computer. Thus, after a web page is created, the page must be “posted” to a particular server computer which “hosts” the page, so that the page can be accessed over the internet. In order to have one's web page hosted by a server, the individual must contract with an internet service provider (ISP) associated with the server. This contract specifies, among other things, the duration of the time that the ISP will host the page, and how much the individual will pay for that hosting service.
Additionally, uniform resource locator (URL) redirection, also called URL forwarding, domain redirection and domain forwarding, is a technique on the web for making a web page available under many URLs. There are several reasons for a webmaster to use redirection, such as similar domain names, moving a site to a new domain, logging outgoing links, and using short, meaningful, persistent aliases for long or changing URLs.
Users might search for the same information under slightly different URLs, e.g., www.gooogle.com and www.googel.com. An organization can register these domains and re-direct them to the correct location, such as www.google.com. A web site might change its domain name for several reasons. An author might move his or her pages to a new domain or two sites might merge. With URL redirects, incoming links to the old URL can be directed to the new location. These links might be from other sites that have not realized that there is a change or from bookmarks and favorites that users have saved in their browsers. The same applies to search engines. They have the older domain in their database and will link visitors to the URLs found previously. By using a “moved permanently” redirect to the new URL, visitors will still end at the correct page. Also, in the next crawl, the search engine should detect and use the newer URL.
For logging outgoing links, the access logs of most web servers keep detailed information from where visitors came and how they browsed the hosted site. They do not, however, log which links visitors left by. This is because the visitor's browser has no need to communicate with the original server when the visitor clicks on an out-going link. This information can be captured in several ways. One way involves URL redirection. Instead of sending the visitor straight to the other site, links on the site can direct to a URL on the original website's domain that automatically redirects to the real target. This added request will leave a trace in the server logs saying exactly which link was followed. This technique is also used by some corporate websites to have a “warning” page that the content is off-site and not necessarily affiliated with the corporation.
Currently, web engineers tend to pass descriptive attributes in the URL to represent data hierarchies, command structures, transaction paths and session information. This results in a URL that is aesthetically unpleasant and difficult to remember. Sometimes the URL of a page changes even though the content stays the same. There are several techniques to implement a redirect, such as manual redirect, HTTP status codes, refreshing meta tags and HTTP refresh headers, JavaScript redirects, frame redirects, and redirect loops. Furthermore, there exist services that can perform URL redirection on demand, with no need for technical work or access to the web server a site is hosted on. URL redirection services exist to shorten long URLs.
In URL redirecting, web engineers may utilize techniques such as parameter based rules. A parameter is a variable which can be accepted by a subroutine. The subroutine uses the values assigned to its parameters to alter its behavior at runtime. Most programming languages can define subroutines that accept zero or more parameters. Parameters are also commonly referred to as arguments, though arguments are more properly thought of as the actual values or references assigned to the parameter variables when the subroutine is called at runtime. When discussing code that is calling into a subroutine, any values or references passed into the subroutine are the arguments, and the place in the code where these values or references are given is the parameter list. When discussing the code inside the subroutine definition, the variables in the subroutine's parameter list are the parameters, while the values of the parameters at runtime are the arguments.
Many programmers use parameter and argument interchangeably, depending on context to distinguish the meaning. In practice, distinguishing between the two terms is usually unnecessary in order to use them correctly or communicate their use to other programmers. Alternatively, the equivalent terms formal parameter and actual parameter may be used.
In strongly-typed programming languages that are explicitly typed, each parameter's type is specified in the subroutine's declaration. Languages using type inference attempt to discover the types automatically from the function's body and usage, while weakly-typed programming languages defer type resolution to run-time. Some languages use a special keyword (e.g. void) to indicate that the subroutine has no parameters; in formal type theory, such functions take an empty parameter list (whose type is not void, but rather unit). In addition, the exact mechanism for assigning arguments to parameters, called argument passing, depends upon the evaluation strategy used for that parameter (typically call-by-value), which may be specified using keywords.
Some programming languages allow for a default argument to be explicitly or implicitly given in a subroutine's declaration. This allows the caller to omit that argument when calling the subroutine. If the default argument is explicitly given, then that value is used if it is not provided by the caller. If the default argument is implicit (sometimes by using a keyword such as “Optional”) then the language provides a well-known value (such as “null,” “empty,” “zero,” “an empty string,” etc.) if a value is not provided by the caller. Furthermore, some languages allow subroutines to be defined to accept a variable number of arguments. For such languages, the subroutines must iterate through the list of arguments. Some programming languages allow subroutines to have named parameters. This allows the calling code to be more self-documenting. It also provides more flexibility to the caller, often allowing the order of the arguments to be changed, or for arguments to be omitted as needed
E-commerce companies often utilize up-selling sales practices to increase revenue. Generally, up-selling is where a salesman attempts to have the consumer purchase more expensive items, upgrades, or other add-ons in an attempt to make a better sale. Up-selling usually involves marketing more profitable services or products, but up-selling can also be simply exposing the customer to other options he or she may not have considered previously.
Examples of up-sales are adding side dishes to a food order, selling an extended service contract for an appliance, or selling luxury finishing on a vehicle. A common technique for successful up-sellers is becoming aware of a customer's background and budget, allowing them to better understand what the particular person might need. Many companies teach their employees to up-sell products and services. Or, in a more modern context, a web hosting company may offer domains at a particular price, and then offer additional products during a checkout process. This may include web hosting, privacy options, traffic & search engine promotional tools, etc. Up-selling may be done by redirection of URLs.
A need exists for making the process of URL redirection through parameter sets more streamlined, flexible, and accessible to clients. The present invention provides a solution to these needs and other problems, and offers other advantages over the prior art.